package negocio;

import java.util.ArrayList;
import java.util.List;
import persistencia.*;

public class Gerente {

    private MyCEPDAO cepDAO;
    private MyCarroDAO carroDAO;
    private MyClienteDAO clienteDAO;
    private MyMODAO servicoDAO;
    private MyOSDAO orcamentoDAO;
    private MyPecaDAO pecaDAO;
    private List<String> erros = new ArrayList<String>();

    public Gerente(MyCEPDAO cepDAO, MyCarroDAO carroDAO,
            MyClienteDAO clienteDAO, MyMODAO moDAO, MyOSDAO osDAO, MyPecaDAO pecaDAO) {
        this.cepDAO = cepDAO;
        this.carroDAO = carroDAO;
        this.clienteDAO = clienteDAO;
        this.servicoDAO = moDAO;
        this.orcamentoDAO = osDAO;
        this.pecaDAO = pecaDAO;
    }

    public Veiculo buscaVeiculo(int id) throws Exception {
        return carroDAO.procuraPorCodigo(id);
    }

    public Cliente buscaCliente(int id) throws Exception {
        return clienteDAO.procuraPorCodigo(id);
    }

    public Orcamento buscaOrcamento(int id) throws Exception {
        return  new Orcamento();
    }

    
    public Peca buscaPeca(int id) throws Exception {
        return pecaDAO.procuraPorCodigo(id);
    }

    public Servico buscaServico(int id) throws Exception {
        return servicoDAO.procuraPorCodigo(id);
    }

    public void adicionaCliente(Cliente umCliente) throws Exception {
        clienteDAO.adiciona(umCliente);
    }

    public void adicionaVeiculo(Veiculo umVeiculo) throws Exception {
        carroDAO.adiciona(umVeiculo);
    }

    public void adicionaOrcamento(Orcamento umOrcamento) throws Exception {
        orcamentoDAO.adiciona(umOrcamento);
    }

    public void adicionaServico(Servico umServico) throws Exception {
        servicoDAO.adiciona(umServico);
    }

    public void adicionaPeca(Peca umaPeca) throws Exception {
        pecaDAO.adiciona(umaPeca);
    }
    public boolean atualiza(Object obj) {
        erros.clear();
        if (nome == null || nome.isEmpty()) {
            erros.add("Nome não informado");
        }
        if (obj == null || erros.isEmpty()) {
            getErros().add("Nome real não informado");
        }
        if (getErros().isEmpty()) {
            gerente.atualiza(this);
            return true;
        } else {
            return false;
        }
    }
}
